# 习题：
#1、定义好班级同学人员列表，让同学们互送礼物，要求：不能自己送自己，随机送礼，一个人只能收一份礼物。
     #定义好人员名单，循环送礼物的人，随机挑选一个收礼物的，最终打印送礼和收礼的关系

import random
# 定义班级同学人员列表，分为收礼名单和送礼名单
accept_member = ["youshujuan", "zhouyuqing", "quanyan", "xiajingwei", "yangyuchan", "lijiaxuan"]
send_member = accept_member.copy()
# 循环送礼
while len(accept_member):
    # 获得一个随机收礼下标序号
    accept_num = random.randint(0, len(accept_member) - 1)
    # 获得一个随机送礼下标序号
    send_num = random.randint(0,len(send_member) - 1)
    # 当收礼人和送礼人不为同一人时执行
    if accept_member[accept_num] != send_member[send_num]:
        print(f"{accept_member[accept_num]}收到了{send_member[send_num]}的礼物\n")
        # 将当前收礼人从收礼列表中删除
        accept_member.pop(accept_num)
        # 将当前送礼人从送礼列表中删除
        send_member.pop(send_num)

#2、定义一个字典，将字典里面的整数相加，最终打印哪些key相加，它们相加的值是多少。
d = {"first":1,"second":2,"third":3,"fourth":2.2,"fifth":"a","sixth":3.33,"seventh":4,"eighth":5}
#定义一个集合
d_isdigit = set()
sum = 0
for k,v in d.items():
    #如果value值是整数
    if type(v) == int:
        #则把对应的key放入集合中
        d_isdigit.add(k)
        #将字典里面的整数相加
        sum += v
print(f"{d_isdigit}这些key进行相加，相加的值为：{sum}\n")


#3、定义一个列表，里面全部存放整数类型，输出列表中的最大值、最小值、和、平均值。
lst = [5,3,7,11,8,23,6,1]
min = lst[0]
max = lst[0]
sum = 0
for i in lst:
    if i < min:
        min = i
    if i > max:
        max = i
    sum += i
print(f"最大值为：{max}\n最小值为：{min}\n和为：{sum}\n平均值为：{sum/len(lst)}\n")


#4、使用python实现ls命令，接受从键盘输入的文件路径，如果路径是文件夹，打印路径下有哪些文件或文件夹。如果路径是文件，就只输出当前文件本身。
import os
# 接受从键盘输入的文件路径
file_path = input("please input a file path:")
# 如果该文件路径存在
if(os.path.exists(file_path)):
    # 判断该路径是是否为文件夹
    if os.path.isdir(file_path):
        # 如果是文件夹，打印当前路径下的文件名，不包括子目录中的文件
        print(os.listdir(file_path))
    # 判断该路径是否为文件
    elif os.path.isfile(file_path):
        # 如果是文件，就只输出当前文件本身
        print(os.path.basename(file_path))
else:
    print("未找到该文件！")